home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / mpfeel.lha / MPFeel / Modules / net-p-c.em < prev    next >
Lisp/Scheme  |  1992-10-06  |  2KB  |  79 lines

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;;                                                                           ;;
  3. ;;  EuLisp Module                     Copyright (C) University of Bath 1991  ;;
  4. ;;                                                                           ;;
  5. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  6.  
  7. (defmodule net-p-c
  8.  
  9.   (lists
  10.    list-operators
  11.    extras
  12.    streams
  13.    others
  14.    formatted-io
  15.    sockets
  16.    arith
  17.    vectors
  18.    tables
  19.    ccc
  20.    polly) ()
  21.  
  22.   (deflocal client-socket nil)
  23.  
  24.   (defun run-client (data name) 
  25.     (setq client-socket (connect data))
  26.     ;; Identify myself...
  27.     (socket-write client-socket name)
  28.     (format t "\n'~a' starting to serve...\n\n" name)
  29.     (client-dispatch)
  30.     (format t "\nDone.\n"))
  31.  
  32.   (defun client-dispatch ()
  33.     (let ((op (socket-read client-socket)))
  34.       (cond ((eq op 'stop)
  35.          (close-socket client-socket)
  36.               (exit))
  37.         ((eq op 'plus)
  38.          (run-plus)
  39.          (client-dispatch))
  40.         ((eq op 'minus)
  41.          (run-minus)
  42.          (client-dispatch))
  43.         ((eq op 'times)
  44.          (run-times)
  45.          (client-dispatch))
  46.         (t (format t "Unknown operator: ~a\n" op)
  47.            (client-dispatch)))))
  48.  
  49.   (defun run-plus ()
  50.     (let ((r1 (socket-read client-socket))
  51.       (r2 (socket-read client-socket)))
  52.       (format t "+ ~a ~a\n" r1 r2)
  53.       (let ((ans (add-pol r1 r2)))
  54.     (format t "= ~a\n" ans)
  55.     (socket-write client-socket ans)
  56.     ans)))
  57.  
  58.   (defun run-minus ()
  59.     (let ((r1 (socket-read client-socket))
  60.       (r2 (socket-read client-socket)))
  61.       (format t "- ~a ~a\n" r1 r2)
  62.       (let ((ans (sub-pol r1 r2)))
  63.     (format t "= ~a\n" ans)
  64.     (socket-write client-socket ans)
  65.     ans)))
  66.  
  67.   (defun run-times ()
  68.     (let ((r1 (socket-read client-socket))
  69.       (r2 (socket-read client-socket)))
  70.       (format t "* ~a ~a\n" r1 r2)
  71.       (let ((ans (multi-pol r1 r2)))
  72.     (format t "= ~a\n" ans)
  73.     (socket-write client-socket ans)
  74.     ans)))
  75.  
  76. )
  77.  
  78.  
  79.